package org.example.service.api;

import org.example.util.JSONResult;
import org.springframework.stereotype.Service;

/**
 * 用户查询api
 * @param <T>
 */
@Service
public interface UserServiceApi<T>{

    /**
     * 该方法用于注册用户信息
     *
     * @param username 用户名
     * @param userPassword 用户密码
     * @param userSex  用户性别
     * @param userXh 用户学号
     * @param userPhone 用户电话
     * @return 返回查询结果
     */
    public JSONResult userRegist(String username, String userPassword, String userSex, String userXh, String userPhone);

    /**
     * 检查用户名是否被占用
     * @param username 前端传入的用户名
     * @return 返回jsonResult
     */
    JSONResult checkUserName(String username);

    /**
     * 用户登录功能
     * @param username 用户名
     * @param userpassword 用户密码
     * @return 返回结果
     */
    JSONResult userLogin(String username, String userpassword);

    /**
     * 用户信息需改
     * @param userName 用户名
     * @param userphone 用户电话
     * @param userxh 用户学号
     * @param usersex 用户性别
     * @return jsonResult
     */
    JSONResult alterUserInfo(String userName, String userphone, String userxh, String usersex);

    /**
     * 修改用户密码
     * @param username 用户名
     * @param userpassword 用户密码
     * @return JsonResult
     */
    JSONResult alterUserPwd(String username, String userpassword);

    /**
     * 检查用户旧密码
     * @param username 用户名
     * @param userpassword 用户密码
     * @return
     */
    JSONResult checkUserPwd(String username, String userpassword);

    /**
     * 通过用户名查询用户信息
     * @param username 用户名
     * @return
     */
    JSONResult adminQueryUserInfoByUserName(String username);

    /**
     * 修改用户信息  管理员
     * @param userName 用户名
     * @param userPassword 用户密码
     * @param userSex 用户性别
     * @param userXh 用户学号
     * @param userStatus 用户身份状态 1管理员 0 普通用户
     * @param userPhone 用户电话
     * @return
     */
    JSONResult adminAlterUserInfo(String userName, String userPassword, String userSex, String userXh, String userStatus, String userPhone);

    /**
     * 管理员添加用户信息
     * @param username 用户名
     * @param userPassword 用户密码
     * @param userSex 用户性别
     * @param userXh 用户学号
     * @param userPhone 用户电话
     * @param userStatus 用户身份状态 1管理员 0普通用户
     * @return
     */

    JSONResult adminAddUserInfo(String username, String userPhone, String userStatus, String userXh, String userSex, String userPassword);

    /**
     * 通过用户id删除用户信息
     * @param userId 用户id
     * @return
     */
    JSONResult adminDeleteUserInfoByUserId(Integer userId);

    /**
     * 通过用户名删除用户id
     * @param userName 用户名
     * @return
     */
    JSONResult adminDeleteUserInfoByUserName(String userName);
}
